

#ifndef DXF_WRITER_ASCII_H
#define DXF_WRITER_ASCII_H

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "dxf_writer.h"
#include <fstream>
#include <string>
#include "dxflib_export.h"

using std::string;

/**
 * Implements functions defined in DL_Writer for writing low
 *   level DXF constructs to an ASCII format DXF file.
 * 
 * @para fname File name of the file to be created.
 * @para version DXF version. Defaults to VER_2002.
 *
 * @todo What if \c fname is NULL?  Or \c fname can't be opened for
 * another reason?
 */
class DXFLIB_EXPORT DXF_WriterA : public DXF_Writer {
public:
    DXF_WriterA(const char* fname, DXF_Codes::version version=VER_2000)
            : DXF_Writer(version), m_ofile(fname) {}
    virtual ~DXF_WriterA() {}

	bool openFailed() const;
    void close() const;
    void dxfReal(int gc, double value) const;
    void dxfInt(int gc, int value) const;
    void dxfHex(int gc, int value) const;
    void dxfString(int gc, const char* value) const;
    void dxfString(int gc, const string& value) const;

	static void strReplace(char* str, char src, char dest);

private:
    /**
     * DXF file to be created.
     */
    mutable std::ofstream m_ofile;

};

#endif

